/********************************** (C) COPYRIGHT *******************************
* File Name          : sampling.h
* Author             : nx666
* Version            : V1.0.0
* Date               : 2023/03/6
* Description        : foc主要接口在这里声明接口.
*******************************************************************************/
#ifndef __SAMPLING_H
#define __SAMPLING_H

#ifdef __cplusplus
extern "C" {
#endif

#include "common_type.h"
#include "driver.h"
#include "fiter.h"

/**********************************宏定义区******************************/



typedef struct sampling { 
    adc_ *adc;             //adc设备
    _iq   lpf;            //低通滤波器 系数
    _iq   _lpf;            //低通滤波器 系数
    uInt32 id;            //采样帧id
    _iq   f;             //电流频率
    _iq   realf;             //电流频率
    _iq   theta;             //当前角度
    _iq  Ia_orig;            //a相线电流 A
    _iq  Ib_orig;            //b相线电流 A
    _iq  Ic_orig;            //c相线电流 A
    _iq  Ia;            //a相线电流 A
    _iq  Ib;            //b相线电流 A
    _iq  Ic;            //c相线电流 A
    _iq        Ia_upper;
    _iq        Ia_lower;
    _iq        Ia_scalingFactor;   //a相线电流缩放系数
    _iq        Ib_upper;
    _iq        Ib_lower;
    _iq        Ib_scalingFactor;   //b相线电流缩放系数
    _iq        Ic_upper;
    _iq        Ic_lower;
    _iq        Ic_scalingFactor;   //c相线电流缩放系数
    FITER_movingAverage_  *fiterA;
    FITER_movingAverage_  *fiterB;
    FITER_movingAverage_  *fiterC;

/* 操作函数 --start */
    Int (*doSampling)(struct sampling *);
/* 操作函数 --end */

}sampling_;

/********************************函数声明区******************************/

// /*********************************************************************
//  * @fn      foc_samplingRun
//  *
//  * @brief   foc采样任务，
//  *              void
//  *
//  * @return  FUNC_SOK，成功  FUNC_FAIL，失败
//  *          
//  */
// Int foc_samplingRun(void *);

// /*********************************************************************
//  * @fn      foc_getCurI
//  *
//  * @brief   foc获取当前电流，阻塞接口，
//  *              void
//  *
//  * @return  foc_samplingSet *,成功  NULL，失败
//  *          
//  */
// foc_samplingSet * foc_getCurI(void);

// /*********************************************************************
//  * @fn      foc_samplingInit
//  *
//  * @brief   foc初始化采样模块，
//  *              pAdcDev 
//  *
//  * @return  foc_samplingSet *，成功  NULL，失败
//  *          
//  */
// foc_samplingSet *foc_samplingInit(foc_adcObj *pAdcDev);

/*********************************************************************
 * @fn      createSampling
 *
 * @brief   采样模块构造函数，
 *              void
 *
 * @return  sampling_ *，成功  NULL，失败
 *          
 */
sampling_ *createSampling(void);

#ifdef __cplusplus
}
#endif

#endif /*__SAMPLING_H */